Custom Error Handler তৈরি করা

Latest Technologies - অ্যাপাচি ক্যামেল (Apache  Camel) - Error Handling এবং Exception Management | NCTB BOOK

Apache Camel-এ Custom Error Handler তৈরি করা একটি কার্যকরী উপায়, যা আপনার নির্দিষ্ট ব্যবসায়িক লজিক অনুযায়ী ত্রুটিগুলোকে পরিচালনা করতে সক্ষম করে। Custom Error Handler ব্যবহার করে আপনি ত্রুটি হ্যান্ডলিংয়ের জন্য কাস্টম লজিক যুক্ত করতে পারেন, যেমন ত্রুটি লগ করা, আলাদা ডেস্টিনেশনে মেসেজ পাঠানো, অথবা মেসেজ পুনরায় চেষ্টা করা।

Custom Error Handler তৈরি করার ধাপ

১. Maven প্রকল্প সেটআপ

প্রথমে নিশ্চিত করুন যে আপনার Maven প্রকল্পে Apache Camel এর ডিপেনডেন্সি রয়েছে। pom.xml ফাইলে নিচের ডিপেনডেন্সি যুক্ত করুন:

<dependencies>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-core</artifactId>
        <version>3.17.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-jackson</artifactId>
        <version>3.17.0</version>
    </dependency>
    <!-- Add other dependencies as needed -->
</dependencies>

২. Custom Error Handler তৈরি করা

একটি Custom Error Handler তৈরি করতে, আপনি একটি ক্লাস তৈরি করবেন যা Processor ইন্টারফেস ইমপ্লিমেন্ট করবে। এই ক্লাসে আপনি আপনার কাস্টম লজিক যুক্ত করবেন।

CustomErrorHandler.java:

import org.apache.camel.Exchange;
import org.apache.camel.Processor;

public class CustomErrorHandler implements Processor {
    @Override
    public void process(Exchange exchange) throws Exception {
        Exception exception = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
        String errorMessage = String.format("Custom Error Handler: %s", exception.getMessage());
        
        // Log the error
        System.out.println(errorMessage);
        
        // Optionally modify the message body
        exchange.getIn().setBody("Error handled: " + exception.getMessage());
        
        // You can also set properties or send messages to different destinations here
    }
}

৩. Apache Camel রাউটে Custom Error Handler ব্যবহার করা

এখন আপনি আপনার Custom Error Handler রাউটে ব্যবহার করতে পারেন। এখানে একটি উদাহরণ দেয়া হলো:

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;

public class CamelApplication {
    public static void main(String[] args) throws Exception {
        CamelContext context = new DefaultCamelContext();

        // Add the route with Custom Error Handler
        context.addRoutes(new RouteBuilder() {
            @Override
            public void configure() {
                // Define custom error handling for all exceptions
                onException(Exception.class)
                    .process(new CustomErrorHandler())
                    .handled(true); // Mark as handled to avoid further processing

                from("direct:start")
                    .to("http://some-external-service") // Simulating a call that might fail
                    .to("log:response");
            }
        });

        context.start();

        // Sending a test message
        context.createProducerTemplate().sendBody("direct:start", "Test Message");

        // Keep the application running for a while
        Thread.sleep(5000);
        context.stop();
    }
}

৪. টেস্ট করা

উপরের উদাহরণে, যদি http://some-external-service এ কোনো ত্রুটি ঘটে, তবে CustomErrorHandler ক্লাসের process মেথডটি কল হবে এবং ত্রুটির তথ্য লগ করবে।

উপসংহার

Apache Camel-এ Custom Error Handler তৈরি করা আপনাকে আপনার নির্দিষ্ট ব্যবসায়িক লজিক অনুযায়ী ত্রুটিগুলো পরিচালনা করতে সক্ষম করে। এটি ত্রুটি হ্যান্ডলিংয়ের জন্য একটি নমনীয় পদ্ধতি প্রদান করে, যা আপনাকে ত্রুটির জন্য কাস্টম প্রতিক্রিয়া তৈরি করতে দেয়।

Custom Error Handlers ব্যবহার করে আপনি ত্রুটিগুলোর সমাধান করতে পারেন এবং আপনার অ্যাপ্লিকেশনগুলোর স্থিতিশীলতা ও কার্যকারিতা বাড়াতে পারেন।

Promotion